package com.bachongLightNovel.system.service;

import com.bachongLightNovel.model.dto.system.LoginDto;
import com.bachongLightNovel.model.dto.system.PasswordDto;
import com.bachongLightNovel.model.dto.system.SystemUserAssignDto;
import com.bachongLightNovel.model.dto.system.SystemUserPageDto;
import com.bachongLightNovel.model.pojo.system.User;
import com.bachongLightNovel.model.vo.page.PageVo;
import com.bachongLightNovel.model.vo.system.UserInfoVo;

import java.util.List;


public interface SystemUserService{

    /**
     * 用户登录方法,返回token
     * @return
     */
    String login(LoginDto dto);

    /**
     * 从请求头中获取登录用户的id，并获取用户信息
     * @param userId
     * @return
     */
    UserInfoVo getUserInfo(Long userId);

    /**
     * 用户条件分页列表查询
     * @param current
     * @param size
     * @param dto
     * @return
     */
    PageVo<User> findPage(Integer current, Integer size, SystemUserPageDto dto);

    /**
     * 添加用户
     * @param user
     * @return
     */
    void saveUser(User user);

    /**
     * 修改用户信息
     * @param user
     * @return
     */
    void updateUser(User user);

    /**
     * 根据id删除用户
     * @param id
     * @return
     */
    void removeById(Long id);

    /**
     * 为用户分配角色
     * @param dto
     * @return
     */
    void assign(SystemUserAssignDto dto);


    /**
     * 退出登录
     * @param :
     * @return Result
     * @author vermouth
     */
    void logout(String token);

    /**
     * 根据用户名查询用户id
     * @param auditUser:
     * @return Long
     * @author vermouth
     */
    List<Long> getUserIdByUsername(String auditUser);

    /**
     * 修改密码
     * @param dto:
     * @return Result
     * @author vermouth
     */
    void updatePassword(PasswordDto dto);
}
